kubernetes 安装

配置国内源
	mkdir /etc/yum.repos.d/bak && mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/bak
	wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
	yum makecache
	yum -y update

关闭防火墙,selinux和 swap
	#防火墙
	systemctl stop firewalld & systemctl disable firewalld
	#selinux
	setenforce 0
	sed -i 's/^SELINUX=enforcing$/SELINUX=disabled/' /etc/selinux/config
	#swap 用top查看swap情况,会看到swap的使用为0
	swapoff -a
	sed -ri '/^[^#]*swap/s@^@#@' /etc/fstab

设置路由

| 配置内核参数,将桥接的IPv4流量传递到iptables的链


	yum install -y bridge-utils.x86_64
	modprobe  br_netfilter  # 加载br_netfilter模块,使用lsmod查看开启的模块
	cat <<EOF >  /etc/sysctl.d/k8s.conf
	net.bridge.bridge-nf-call-ip6tables = 1
	net.bridge.bridge-nf-call-iptables = 1
	EOF
	sysctl --system  # 重新加载所有配置文件

安装docker
	# 配置docker源
	yum -y install yum-utils
	yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
	yum makecache
	
	# 安装合适的docker版本
	# 由于k8s支持的docker版本存在一定的滞后,要选择好合适的docker版本	yum list docker-ce --showduplicates | sort -r
	yum -y install docker-ce-18.09.9
	systemctl start docker & systemctl enable docker
配置docker
# 修改docker cgroup驱动 与k8s一致,使用systemd:native.cgroupdriver=systemd
cat > /etc/docker/daemon.json <<EOF
{
    "exec-opts": ["native.cgroupdriver=systemd"],
    "log-driver": "json-file",
    "log-opts": {
        "max-size": "100m"
    },
    "storage-driver": "overlay2",
    "storage-opts": [
        "overlay2.override_kernel_check=true"
    ],
  "registry-mirrors": ["https://registry.docker-cn.com"]
}
EOF
# 重启docker使配置生效
systemctl restart docker  

安装k8s组件
# 配置k8s yum源
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=0
repo_gpgcheck=0
gpgkey=http://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg
       http://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
EOF

#在master节点安装kubelet kubeadm kubectl
yum install -y kubelet kubeadm kubectl --disableexcludes=kubernetes
#开机启动kubelet
systemctl enable --now kubelet  # 开机启动kubelet

修改hostname

hostnamectl set-hostname centos-master
cat <<EOF >>/etc/hosts
172.16.0.3 centos-master
EOF
部署master节点
# 在master进行k8s集群初始化
kubeadm init --kubernetes-version=1.16.3 \  
--apiserver-advertise-address=172.16.0.3 \  
--image-repository registry.aliyuncs.com/google_containers \  
--service-cidr=172.1.0.0/16 \  
--pod-network-cidr=172.244.0.0/16
# 定义POD的网段为:192.244.0.0/16,api server地址就是master本机IP地址。

#记录生成的最后部分内容,此内容需要在其它节点加入k8s集群时执行
kubeadm join 172.16.0.3:6443 --token bvkgue.f5zpauffltb6zkzi \
    --discovery-token-ca-cert-hash sha256:3113f037dce468decbf284d3ef7d19809513906ddaa79e6b4496f1d4a1a98c88

# 配置kubectl工具
mkdir -p $HOME/.kube
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
在master节点部署flannel网络
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
将master节点作为工作节点

k8s集群默认不会将Pod调度到master上,这样master的资源就浪费了。在master上,可以运行以下命令使其作为一个工作节点:


kubectl taint nodes --all node-role.kubernetes.io/master-
验证集群是否正常
	kubectl get nodes
	kubectl get pods -n kube-system

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×